iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

用unity製作2DRPG雛形-沒有大野狼的小紅帽系列 第 8

8.unity角色移動(剛體Rigidbody2D)

  • 分享至 

  • xImage
  •  

剛體2D(Rigidbody 2D)

當物體運動速度遠小於光速可被視為理想剛體,可以忽略型變,也就是說被碰撞後形狀會保持一樣。
也就是說剛體在物理中被視為不形變的物體。

替物件上新增元件"剛體",使物件可以使用物理系統。
1.png

由於是製作2D遊戲,選擇Rigidbody 2D。

2.png

剛體2D(請參閱Rigidbody 2D)

3.png

運動種類Body Type,可以選擇物理系統
1.Dynamic 動力,運動時受力影響。
2.Kinematic 運動,不受力影響但會運動。
3.static 固定,不受力影響也不會動。

物理屬性
1.Mass質量,F=ma,會影響碰撞速度,大質量去撞小質量,小質量會用較快的速度飛出去。
2.Drag阻力,分為線性阻力和角阻力。像摩擦力一樣,決定慢下來的速度。
3.Gravity Scale重力大小,物體受重力影響的程度。
※環境重力可以調整(Edit → Project Settings... → Physic 2D)

碰撞偵測Collision Dectection
1.Discrete 非連續性
2.Continuous 連續性

睡眠模式Sleeping Mode
睡眠模式決定rigidbody要不要工作(啟用),醒著就要,睡著就不用,可透過事件改變狀態。
1.Never Sleep 不睡,一直都醒著
2.Start Awake 開始時醒著
3.Start Asleep 開始時睡著

差值Interpolate
差值,系統推算與差值,負責改善不規則位移,如果運動起來有不明抖動可以打開這個修正。
1.None 無
2.Interpolate 差值,根據前一幀的位置進行平滑
3.Extrapolate 推算,推算下一幀的位置進行平滑

限制Constraints
1.Freeze Position X Y ,限制X軸或Y軸位移,可以做成平移或垂直移動。
2.Freeze Rotation Z ,限制Z軸轉動,這樣人物就不會翻轉,才不會頭下腳上。

利用rigidbody 2D移動

void Awake() //或是void Start()
{
    Rigidbody2D rb; //建立剛體2D,名叫rb(自己取)
	rb=GetComponent<Rigidbody2D>(); //抓取物件的剛體
}

void Update()
{
	movement();
}

private void movement()
{
	if (Input.GetKey("d"))  //其他方向以此類推
	{
		rb.velocity= Vector2.right;
	}
}

另外可以使用Rigidbody2D.MovePosition這個方法(請參閱unity手冊)


上一篇
7.unity角色移動(Vector、Transform)
下一篇
9.unity物件偵測(碰撞Collider2D)
系列文
用unity製作2DRPG雛形-沒有大野狼的小紅帽30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言